package com.yun.algorithmproblem.leetcode;

import com.yun.datastructure.linear.list.linkedlist.ListNode;

/**
 * 2181. 合并零之间的节点
 * <p>
 * 给你一个链表的头节点 head ，该链表包含由 0 分隔开的一连串整数。链表的 开端 和 末尾 的节点都满足 Node.val == 0 。
 * <p>
 * 对于每两个相邻的 0 ，请你将它们之间的所有节点合并成一个节点，其值是所有已合并节点的值之和。然后将所有 0 移除，修改后的链表不应该含有任何 0 。
 * <p>
 * 返回修改后链表的头节点 head 。
 */
public class Leetcode2181 {


    public ListNode mergeNodes(ListNode head) {
        ListNode p = head;
        ListNode res = new ListNode();
        ListNode q = res;
        int sum = 0;
        while (p != null) {
            if (p.val == 0 && sum != 0) {
                q.next = new ListNode();
                q = q.next;
                q.val = sum;
                sum = 0;
            } else {
                sum += p.val;
            }
            p = p.next;
        }
        return res.next;
    }
}
